#ifndef EXHIBITIONWIDGET_H
#define EXHIBITIONWIDGET_H

#include <QWidget>
#include <QTimer>
#include <QDebug>
#include <QMessageBox>
namespace Ui {
class ExhibitionWidget;
}
//展示
/**
 * @brief 展品展示模块主界面
 * 实现校园景点图片和文字介绍的轮播展示功能，
 * 支持自动播放和手动切换模式
 */
class ExhibitionWidget : public QWidget
{
    Q_OBJECT

public:
    /**
     * @brief 构造函数
     * @param parent 父窗口指针
     * 初始化用户界面组件，建立定时器信号槽连接
     */
    explicit ExhibitionWidget(QWidget *parent = nullptr);
    
    /**
     * @brief 析构函数
     * 释放用户界面资源，清理指针内存
     */
    ~ExhibitionWidget();
        /**
     * @brief 查询指定路径下的所有JSON文件
     * @param path 要搜索的目录路径
     * @return 包含所有JSON文件路径的字符串列表
     */
    QStringList findAllJsonFile(QString path);

    /**
     * @brief 查询指定路径下的所有TXT文件
     * @param path 要搜索的目录路径
     * @return 包含所有TXT文件路径的字符串列表
     */
    QStringList findAllTxtFile(QString path);
    void loadImage();//加载图片和文本
protected:
    void showEvent(QShowEvent *event);
private slots:
        /**
     * @brief 上一张按钮点击处理
     * 加载前一张图片并更新显示，循环切换至末尾
     */
    void on_pushButton_clicked();

    /**
     * @brief 下一张按钮点击处理
     * 加载后一张图片并更新显示，循环切换至开头
     */
    void on_pushButton_2_clicked();

    /**
     * @brief 展示模式切换处理
     * @param arg1 当前选中的展示模式
     * 根据选择自动切换定时器启停状态
     */
    void on_comboBox_currentIndexChanged(const QString &arg1);

    /**
     * @brief 自动播放控制按钮
     * 切换定时器运行状态并更新按钮文本
     */
    void on_pushButton_3_clicked();

private:
    Ui::ExhibitionWidget *ui; ///< 用户界面组件指针
    int m_num; ///< 当前展示图片索引
    QStringList m_filelist; ///< 图片文件路径列表
    QStringList m_fileTxtlist; ///< 文本文件路径列表
    QString filetxt; ///< 当前展示的文本内容
};

#endif // EXHIBITIONWIDGET_H
